/**
 * Author@ Cheng Feitian
 * Date: 2021-4-8
 * Description: 函数模板与普通函数的区别
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

// 1. 普通函数调用可以发生隐式类型转换
int myAdd01(int a, int b)
{
    return a + b;
}

void test01()
{
    int a = 10;
    int b = 20;
    char c = 'c';

    cout << myAdd01(a, c) << endl;
}

// 2. 函数模板 用自动类型推导，不可以发生隐式类型转换

template <typename T>
T myAdd02(T a, T b)
{
    return a + b;
}

void test02()
{
    int a = 10;
    int b = 20;
    char c = 'c';
    //1.自动类型推导
    cout << myAdd02(a, b) << endl;

    //2.显示指定类型
    cout << myAdd02<int>(a, c) << endl;
}
// 3. 函数模板 用显示指定类型，可以发生隐式类型转换

int main()
{
    // test01();
    test02();
    return 0;
}
